const escape = [
    '/signin',
    '/signup',
    '/signout',
    '/',
    '/oauth/authorize',
    '/oauth/token'
]
module.exports = async function (ctx, next) {
    let url = ctx.request.url
    ctx.state.router = url
    let session = ctx.session // 默认{}
    if (!session.user) {
        //未登录判断是否需要跳转 在不需要验证的情况下 next
        if (escape.includes(url)) { // es7 新的方法
            return next() // 继续执行其他中间件
        }
        ctx.state.user = null        
        ctx.state.user_id = null
        await ctx.redirect('/signin') // 不要执行其他中间件 跳转
    } else {
        // 保存常用的用户id 和用户信息
        let user = JSON.parse(session.user)
        ctx.state.user = user
        ctx.state.user_id = user.id
        return next()                   // 继续执行其他中间件
    }
}